import requests
import os
import time


def transcribe_audio_with_requests(audio_file_path, api_url, api_key, language=None):
    """
    使用第三方 API 将本地音频文件转换为文字。

    Args:
        audio_file_path: 本地音频文件的路径。
        api_url: 第三方 API 的 URL。
        api_key: 你的 API Key。
        language: (可选) 音频的语言代码 (例如 "zh" for Chinese, "en" for English)。

    Returns:
        如果成功，返回转录的文本；如果失败，返回 None。
    """
    headers = {
        "Authorization": f"Bearer {api_key}",
    }
    # 这部分需要根据实际的 API 文档修改
    url = f"{api_url}/audio/transcriptions"  # 假设的 API 路径，需要修改
    files = {
        "file": (
            os.path.basename(audio_file_path),
            open(audio_file_path, "rb"),
            "audio/mpeg",
        ),  # 假设音频类型是 mpeg，需要根据你的文件修改
    }
    data = {
        "model": "whisper-1",  # 假设的模型名称，可能需要修改
        # "language": language,  # 如果 API 支持 language 参数
    }
    try:
        response = requests.post(
            url, headers=headers, files=files, data=data, timeout=60
        )  # 增加超时时间
        response.raise_for_status()  # 检查请求是否成功

        transcript_text = response.json()[
            "text"
        ]  # 假设返回的 JSON 中包含 "text" 字段，需要修改
        with open(audio_file_path[:-4] + ".txt", "w", encoding="utf-8") as f:
            f.write(transcript_text)

        return transcript_text
    except requests.exceptions.RequestException as e:
        print(f"请求失败: {e}")
        return None
    except KeyError as e:
        print(
            f"解析结果失败，返回的 JSON 数据中缺少 'text' 字段。返回内容：{response.text}"
        )
        return None


if __name__ == "__main__":
    # 请替换为你的实际信息
    audio_file = "wsdm-cup-multilingual-chatbot-arena/code/20250106_193926.mp4"  # 替换为你的实际音频文件路径，支持mp3, wav, m4a, mp4, webm, ...
    api_url = "https://api.61798.cn/v1"  # 替换为你的第三方 API URL
    api_key = (
        "sk-HUgLLdvglvarFKNPEaF6F673BbE6472c87922aF52b381a54"  # 替换为你的 API Key
    )

    if not os.path.exists(audio_file):
        print(f"错误：音频文件 {audio_file} 不存在。")
    else:
        transcribed_text = transcribe_audio_with_requests(audio_file, api_url, api_key)

        if transcribed_text:
            print("转录文本:\n")
            print(transcribed_text)
        else:
            print("音频转录失败。")
